Application virtualization is a technique for delivering an application from a server to a client on demand. With application virtualization, the application is encapsulated in some form of a package or container and stored on the server. Then, when a user desires to run the application on the client, the server delivers (or streams) the application to the client where it can be executed locally. This is in contrast to remote desktop techniques where the application would actually be executed on the server with only its user interface being delivered to the client.
Various different techniques have been employed to package and deliver applications. For example, Dell Wyse's vWorkSpace WSM product employs “layers” as the containers for segregating resources such as files, folders, registry data, and related metadata. An application layer can contain all resources needed to load and execute an application on a client (e.g., the application's .exe and a registry hive containing appropriate registry settings). In some cases, such layers can be stored as a vDisk (e.g., a Virtual Hard Disk (VHD) or .vhd file). Accordingly, when a client desires to access an application that is virtualized, the central server can deliver the appropriate application layer (e.g., a .vhd file that includes all resources necessary to execute Microsoft Word) to the client where it can be mounted. Once the application layer is mounted, the contents of the application layer will be accessible in a typical manner. In fact, the client-side components can even abstract the fact that the application layer is a separate vDisk by employing file system filter techniques that cause the contents of the vDisk to appear as if they were stored in the local file system. Once the user is finished using the application (e.g., when the user logs off of the client), the application layer can be unmounted from the client. In this way, the resources of the application layer will not remain accessible on the client if another user were to log in.
One benefit of application virtualization is that it allows the applications to be stored and maintained centrally. For example, an application layer in the form of a .vhd file can be stored on a central server and delivered to any number of clients on demand. The application layer therefore provides a single location that can be updated as necessary. In many implementations, especially in large organizations having many locations, a central server in the organization's headquarters may be employed to store and maintain the application layers. Each other location may then include a separate server that is configured to obtain application layers from the central server and provide them to the clients at their location.
One problem with this architecture is that it requires a dedicated server at each location. Also, to avoid having a single point of failure, most organizations would typically employ more than one server at each location. This can greatly increase the cost and overhead associated with providing application virtualization. In many cases, this cost and overhead are prohibitive, especially to smaller organizations.